package prh25.biblioteca.entity.dao;

import java.util.List;
import java.sql.Timestamp;

import prh25.biblioteca.entity.Documento;


/**
 * <p>Generic DAO layer for Documentos</p>
 * <p></p>
 *
 * @author Wilson
 * @see http://code.google.com/p/prh-doc/
 */
public interface DocumentoDAO extends GenericDAO<Documento,Integer> {

	
	  	 
	/**
	 * Find Documento by version
	 */
	public List<Documento> findByVersion(Integer version);

	/**
	 * Find Documento by entityUid
	 */
	public List<Documento> findByEntityUid(String entityUid);

	/**
	 * Find Documento by ativo
	 */
	public List<Documento> findByAtivo(Boolean ativo);

	/**
	 * Find Documento by title
	 */
	public List<Documento> findByTitle(String title);

	/**
	 * Find Documento by creator
	 */
	public List<Documento> findByCreator(String creator);

	/**
	 * Find Documento by subject
	 */
	public List<Documento> findBySubject(String subject);

	/**
	 * Find Documento by description
	 */
	public List<Documento> findByDescription(String description);

	/**
	 * Find Documento by publisher
	 */
	public List<Documento> findByPublisher(String publisher);

	/**
	 * Find Documento by contributor
	 */
	public List<Documento> findByContributor(String contributor);

	/**
	 * Find Documento by date
	 */
	public List<Documento> findByDate(Timestamp date);

	/**
	 * Find Documento by type
	 */
	public List<Documento> findByType(String type);

	/**
	 * Find Documento by format
	 */
	public List<Documento> findByFormat(String format);

	/**
	 * Find Documento by identifier
	 */
	public List<Documento> findByIdentifier(String identifier);

	/**
	 * Find Documento by source
	 */
	public List<Documento> findBySource(String source);

	/**
	 * Find Documento by language
	 */
	public List<Documento> findByLanguage(String language);

	/**
	 * Find Documento by relation
	 */
	public List<Documento> findByRelation(String relation);

	/**
	 * Find Documento by coverage
	 */
	public List<Documento> findByCoverage(String coverage);

	/**
	 * Find Documento by rights
	 */
	public List<Documento> findByRights(String rights);

	/**
	 * Find Documento by arquivoId
	 */
	public List<Documento> findByArquivoId(Integer arquivoId);

	/**
	 * Find Documento by revisorId
	 */
	public List<Documento> findByRevisorId(Integer revisorId);

	/**
	 * Find Documento by usuarioId
	 */
	public List<Documento> findByUsuarioId(Integer usuarioId);
	
	
	/**
	 * Find Documento by title
	 */
	public List<Documento> findByTitleLike(String title, Boolean ativo);
	
	/**
	 * Find Documento by description
	 */
	public List<Documento> findByDescriptionLike(String description, Boolean ativo);
	
	/**
	 * Find Documento by usuarioId
	 */
	public List<Documento> findByUsuarioId(Integer usuarioId, Boolean ativo );
	
	/**
	 * Find Documento by creator
	 */
	public List<Documento> findByCreatorLike(String creator, Boolean ativo);
	

}